import axios from 'axios'
import qs from 'qs'
import {
	getAdminToken
} from './auth'
import {
	MessageBox,
	Message
} from 'element-ui'
// import { Toast } from 'vant'
import el from "element-ui/src/locale/lang/el";

// create an axios instance
var service = axios.create({
	// baseURL: "http://114.115.164.43:8888/fund", // url = base url + request url
  // baseURL: "http://192.168.1.186:8888/fund", // url = base url + request url
  baseURL: "http://202.207.160.208/fund", // url = base url + request url
  // baseURL: 'http://jyfzjjh.sxnu.edu.cn/fund',
	// withCredentials: true, // send cookies when cross-domain requests
	timeout: 10000 // request timeout
})

// request interceptor
service.interceptors.request.use(
	config => {
		// do something before request is sent
		if (getAdminToken()) {
			// let each request carry token
			// ['X-Token'] is a custom headers key
			// please modify it according to the actual situation
			config.headers['Authorization'] = 'Bearer ' + getAdminToken()
		}

		// 判断图片
		if (Object.prototype.toString.call(config.data) === '[object FormData]') {
			return config
		}

		// get 判断
		if (config.method.toLocaleLowerCase() === 'get') {
			config.params = config.data
			config.data = null
		} else {
			config.data = qs.stringify(config.data)
		}

		return config
	},
	error => {
		// do something with request error
		return Promise.reject(error)
	}
)

// response interceptor
service.interceptors.response.use(
	/**
	 * If you want to get http information such as headers or status
	 * Please return  response => response
	 */

	/**
	 * Determine the request status by custom code
	 * Here is just an example
	 * You can also judge the status by HTTP Status Code
	 */
	response => {
		var res = response.data
		if (response.status !== 200 || res.code !== 200) {
      // Toast({
      //   message: res.message || '服务器繁忙',
      //   type: 'error',
      //   duration: 5 * 1000
      // })
			Message({
				message: res.message || 'Error',
				type: 'error',
				duration: 5 * 1000
			})
			return Promise.reject(new Error(res.msg || 'Error'))
		} else {
			return res
		}
	},
	error => {
		console.log(error.response) // for debug
		if (error.response.status === 403) {
			// Toast.fail('请先登录')
      Message({
        message: '请先登录',
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(error)
		} else if (error.response.status === 401) {
		  localStorage.removeItem('user_token')
      Message({
        message: '账号信息错误，请重新登录',
        type: 'error',
        duration: 5 * 1000
      })
      window.location.reload()
      return Promise.reject(error)
    } else {
		  console.log(error.response.data.message)
      // Toast({
      //   message: error.response.data.message,
      //   type: 'error',
      //   duration: 5 * 1000
      // })
      Message({
        message: error.response.data.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(error)
    }
	}
)

export default service
